#ifndef ACTIONABLEELEMENT_HPP
#define ACTIONABLEELEMENT_HPP

#include "Element.hpp"

class ActionableElement : public Element {
private:
    bool functionsShouldBeTriggered;
    bool futureState;
    bool state;
    float timer;

protected:
    virtual void turnOn() = 0;
    virtual void turnOff() = 0;

public:
    ActionableElement(bool state);

    bool isActuated();
    void setFutureState(bool state, float seconds);
    void setState(bool state);
    void toogle();
    void triggerFunctions(float elapsedTime);
};

#endif
